public class Sphere{
  
   private float radio;
   private PVector posicion;
   private PVector posicionOld;
   private PVector aceleracion;
   private boolean pined;
   private boolean pint=false;
   private float distancia;
  
  public Sphere(float radio,PVector posicion,PVector aceleracion,boolean pined){
  
    this.radio =radio;
    this.posicion = posicion;
    this.aceleracion = aceleracion;
    this.posicionOld = new PVector(posicion.x,posicion.y,posicion.z);
    this.pined = pined;
  
 }
 public float getDistancia(){
   return distancia;
 }
 public void setDistancia(float distancia){
   this.distancia=distancia;
 }
 
  public Sphere(float radio,PVector posicion){
  
    this.radio =radio;
    this.posicion = posicion;
    this.aceleracion = new PVector(0,0,0);
    this.posicionOld = new PVector(posicion.x,posicion.y,posicion.z);
    this.pined = true;
  
 }
 public void addGravedad(float g){
  this.aceleracion.add(0,g,0); 
 }
 public void setPint(boolean bol){
   pint=bol;
 }
  public void actualizar(float dt){
  
    /*
   
    float xtmp = posicion.x+(posicion.x-posicionOld.x)+(aceleracion.x*dt*dt);
    float ytmp = posicion.y+(posicion.y-posicionOld.y)+(aceleracion.y*dt*dt);
    float ztmp=  posicion.z+(posicion.z-posicionOld.z)+(aceleracion.z*dt*dt);
    posicionOld = new PVector(posicion.x,posicion.y,posicion.z);
    
    posicion.x=xtmp;
    posicion.y=ytmp;
    posicion.z=ztmp;
    aceleracion.x=0;
    aceleracion.y=0;
    aceleracion.z=0;*/
    
    aceleracion.mult(dt*dt);
    PVector p = new PVector(0,0,0);
    p.add(posicion);
    p.mult(2);
    p.sub(posicionOld);
    p.add(aceleracion);
    PVector roz = posicion.get();
    roz.sub(posicionOld);
    roz.normalize();
    roz.mult(0.7);
    
   // p.sub(roz);
    posicionOld=posicion;
    posicionOld.add(roz);
    posicion = p;
   // aceleracion = new PVector(0,0,0);
   
    if(pined)
    posicion=posicionOld;
    
  } 
  public void setAcc(PVector a){
   aceleracion=a;
  }
  public PVector getAcc(){
    return aceleracion;
  }
  public void draw(){
    pushMatrix();
    translate(posicion.x,posicion.y,posicion.z);
    fill(255);
    if(pint)
    fill(255,0,0);
    noStroke();
    
   sphere(radio);
   popMatrix();
  }
  
  public float getX(){
   return posicion.x; 
  }
  public float getY(){
    return posicion.y;
  }
  public float getZ(){
   return posicion.z; 
  }
  public float getOX(){
   return posicionOld.x; 
  }
  public float getOY(){
    return posicionOld.y;
  }
  public float getOZ(){
   return posicionOld.z; 
  }
  public float getRadio(){
    return this.radio;
  }
  public void setOX(float ox){
    this.posicionOld.x=ox;
  }
  public void setOY(float oy){
    this.posicionOld.y=oy;
  }
  public void setX(float x){
    posicion.x=x;
  }
  public void setY(float y){
    posicion.y=y;
  }
  public void setZ(float z){
    posicion.z=z;
  }
  
  public void setPosicion(PVector p){
   posicion = p;
  }
  public void setPosicionAnterior(PVector o){
   posicionOld = o;
  }
  public PVector getPosicionAnterior(){
    return posicionOld;
  }
  
  public boolean isPinned(){
    return pined;
  }
  public void setPinned(boolean pined){
   this.pined=pined; 
  }
  
  public PVector getVector(){
    return posicion;
  }
  public boolean isPint(){
    return pint;
  }
  
    
}
